#ifndef __KERNEL_OBJECT_H__
#define __KERNEL_OBJECT_H__

enum class_type {
    CLASS_TYPE_DEVICE,
    CLASS_TYPE_THREAD,
    CLASS_TYPE_NUKNOWN
};

struct object {
	char name[NAME_MAX_SIZE];
    enum class_type type;
	struct list list;
};

/* 初始化一个object对象，只有经过初始化的object对象才能正常使用 */
extern err_t object_init(struct object *obj, const char *name);

/* 根据名字找到一个object对象 */
extern struct object *object_find(const char *name, enum class_type type);

/* 反初始化一个object对象，反初始化后的object对象将无法正常使用 */
extern void object_deinit(struct object *obj);

/* 关闭全局中断 */
extern ubase_t interrupt_disable(void);

/* 开启全局中断 */
extern void interrupt_enable(ubase_t level);

#endif /* __KERNEL_OBJECT_H__ */
